#ifndef USERMANAGEMENTWIDGET_H
#define USERMANAGEMENTWIDGET_H

#include <QWidget>
#include <QStandardItemModel>
#include <QMessageBox>
#include <QTimer>
#include "databasemanager.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class UserManagementWidget;
}
QT_END_NAMESPACE

// 前向声明
class UserDialog;

class UserManagementWidget : public QWidget
{
    Q_OBJECT

public:
    // 构造函数
    UserManagementWidget(QWidget *parent = nullptr);
    // 析构函数
    ~UserManagementWidget();
    
    // 设置当前登录用户信息
    void setCurrentUser(const UserInfo& currentUser);

public slots:
    // 刷新用户列表
    void refreshUserList();

private slots:
    // 添加用户按钮点击
    void onAddUserClicked();
    // 编辑用户按钮点击
    void onEditUserClicked();
    // 删除用户按钮点击
    void onDeleteUserClicked();
    // 刷新按钮点击
    void onRefreshClicked();
    // 搜索文本变化
    void onSearchTextChanged();
    // 表格选择变化
    void onSelectionChanged();

private:
    // 初始化界面
    void setupUI();
    // 加载用户数据到表格
    void loadUserData();
    // 过滤用户数据
    void filterUserData(const QString& searchText);
    // 获取选中用户信息
    UserInfo getSelectedUser();
    // 更新状态标签
    void updateStatusLabel();
    // 显示错误信息
    void showError(const QString& message);
    // 显示成功信息
    void showSuccess(const QString& message);
    // 显示确认对话框
    bool showConfirmation(const QString& message);
    // 格式化日期时间显示
    QString formatDateTime(const QString& dateTime);
    
    // UI对象
    Ui::UserManagementWidget *ui;
    // 用户表格数据模型
    QStandardItemModel *userTableModel;
    // 用户对话框
    UserDialog *userDialog;
    // 搜索延时器
    QTimer *searchTimer;
    // 所有用户数据缓存
    QList<UserInfo> allUsers;
    // 当前登录用户信息
    UserInfo m_currentUser;
};

#endif // USERMANAGEMENTWIDGET_H